import pygame


# 定义我方飞机类，继承动画精灵类，之后进行碰撞检检测
class MyPlane(pygame.sprite.Sprite):
    def __init__(self, bg_size):
        pygame.sprite.Sprite.__init__(self)
        # 载入我方飞机图片
        self.image1 = pygame.image.load("images/me1.png").convert_alpha()
        self.image2 = pygame.image.load("images/me2.png").convert_alpha()
        # 载入我方飞机坠机图片
        self.destroy_images = []
        self.destroy_images.extend([
            pygame.image.load("images/me_destroy_1.png").convert_alpha(),
            pygame.image.load("images/me_destroy_2.png").convert_alpha(),
            pygame.image.load("images/me_destroy_3.png").convert_alpha(),
            pygame.image.load("images/me_destroy_4.png").convert_alpha()
        ])
        # 获得飞机的矩形位置
        self.rect = self.image1.get_rect()
        # 设置飞机的活动范围
        self.width, self.height = bg_size[0], bg_size[1]
        # 设置飞机开始出现的位置
        self.rect.left, self.rect.top = \
            (self.width - self.rect.width) // 2, \
            self.height - self.rect.height - 60
        # 设置我方飞机飞行速度
        self.speed = 10
        # 设置我方飞机的生存状态
        self.active = True
        # 给我方飞机添加mask属性，将图片的非透明部分标记为mask，用于碰撞检测
        self.mask = pygame.mask.from_surface(self.image1)

    # 飞机向上飞
    def moveup(self):
        # 窗口上边界为0
        # 如果飞机没有飞出上边飞
        if self.rect.top > 0:
            # 则飞机向上飞speed像素
            self.rect.top -= self.speed
        # 飞出上边界，则锁定在0的位置后不再发生变化
        else:
            self.rect.top = 0

    # 飞机向下飞
    def movedown(self):
        # 如果飞机没有飞出下边界上面60的位置
        if self.rect.bottom < self.height - 60:
            # 则向下飞speed像素
            self.rect.bottom += self.speed
        # 飞出下边界，则锁定在下边界上面60的位置后不再发生变化
        else:
            self.rect.bottom = self.height - 60

    # 飞机向左飞
    def moveleft(self):
        # 窗口左边界为0
        # 如果飞机没有飞出左边界
        if self.rect.left > 0:
            # 则飞机向左飞speed像素
            self.rect.left -= self.speed
        # 飞出左边界，则锁定在左边界的位置，不再发生变化
        else:
            self.rect.left = 0

    # 飞机向右飞
    def moveright(self):
        # 如果飞机没有飞出右边界
        if self.rect.right < self.width:
            # 则飞机向右飞speed像素
            self.rect.right += 10
        # 飞出右边界，则锁定在右边界的位置，不再发生变化
        else:
            self.rect.right = self.width
